package com.hch.algorithm.binarytree;

/**
 * 二叉树的二叉链式存储实现的节点
 */
public class TreeNode<T>{
    /**
     * 每一个节点需要保存的内容：本身数据、左孩子、右孩子
     * data：自身数据
     * left：左孩子
     * right：右孩子
     */
    private T data;
    private TreeNode left;
    private TreeNode right;


    /**
     * 三种构造方法
     */
    public TreeNode(){//空构造方法
        data = null;
        left = null;
        right = null;
    }
 
    public TreeNode(T data){//只有数据的构造方法
        this.data = data;
        this.left = null;
        this.right = null;
    }
 
    //四个内容都有的构造方法
    public TreeNode(T data, TreeNode left, TreeNode right, TreeNode parent){
        this.data = data;
        this.left = left;
        this.right = right;
    }
 
    /**
     * 三个属性的 get() 方法
     */
    public TreeNode getLeft() {
        return left;
    }
 
    public TreeNode getRight() {
        return right;
    }
 
    public T getData() {
        return data;
    }
 
    /**
     * 三个属性的 set()方法
     */
    public void setData(T data) {
        this.data = data;
    }
 
    public void setLeft(TreeNode left) {
        this.left = left;
    }
 
    public void setRight(TreeNode right) {
        this.right = right;
    }

    @Override
    public String toString() {
        return "BTNode{" +
                "data=" + data +
                ", left=" + left +
                ", right=" + right +
                '}';
    }
}